package cn.bugstack.springframework.context.support;

import cn.bugstack.springframework.beans.BeansException;

/**
 * ClassPathXmlApplicationContext 是 Spring 框架中用于从类路径下的 XML 配置文件中加载应用上下文的类。
 * 使用 ClassPathXmlApplicationContext 可以方便地加载位于类路径下的 XML 配置文件，并根据其中定义的 Bean 来初始化 Spring 容器。
 * 通常情况下，我们会在 Spring 应用程序的主类中使用 ClassPathXmlApplicationContext 来启动 Spring 容器。
 * 在继承了AbstractXmlApplicationContext类及多层抽象类的功能后，ClassPathXmlApplicationContext类的实现就相对简单了，
 * 主要调用了继承抽象类中的方法和提供了配置文件的地址信息。
 */
public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext {

    private String[] configLocations;

    public ClassPathXmlApplicationContext() {
    }

    /**
     * 从 XML 中加载 BeanDefinition，并刷新上下文
     *
     * @param configLocations
     * @throws BeansException
     */
    public ClassPathXmlApplicationContext(String configLocations) throws BeansException {
        this(new String[]{configLocations});
    }

    /**
     * 从 XML 中加载 BeanDefinition，并刷新上下文
     * @param configLocations
     * @throws BeansException
     */
    public ClassPathXmlApplicationContext(String[] configLocations) throws BeansException {
        this.configLocations = configLocations;
        refresh();
    }

    @Override
    protected String[] getConfigLocations() {
        return configLocations;
    }

}
